﻿Imports Lourdes.BackEnd.BC
Imports Lourdes.BackEnd.Modelo
Imports Lourdes.BackEnd
Public Class frmEntrega
  Inherits System.Web.UI.Page



  Public Sub CargarEntrega()
    Dim intEntId As Integer
    Dim strQuerStr As String = txtPedidoNumero.Text
    Dim bcEnt As New BC_Entrega
    Dim lstEnt As New List(Of Entrega)
    Dim objEnt As Entrega
    If IsNumeric(strQuerStr) Then
      intEntId = CInt(strQuerStr)
      lstEnt = bcEnt.GetByPK(intEntId)
      If lstEnt.Count = 0 Then
        MostrarMensajeError()
      Else
        objEnt = lstEnt.FirstOrDefault
        MostrarEntrega(objEnt)
      End If
    Else
      MostrarMensajeError()
    End If
  End Sub

  Private Sub MostrarEntrega(pEnt As Entrega)
    Dim eEst As Enums.EntregaEstados = pEnt.Estado()
    With pEnt

      Select Case eEst
        Case Enums.EntregaEstados.Cancelado
          mvDatos.SetActiveView(viewCancelada)
          Return
        Case Enums.EntregaEstados.Entregado
          ltrEntregaTitulo.Text = "Entrega nº " & .EntregaId & " ya realizada."
          ltrEntregaTitulo.Text = "Fecha y hora de entrega " & .FechaHoraEntregaPactada.ToString("dd/MM/yyyy") & " a las " & _
          .FechaHoraEntregaPactada.ToString("HH:mm") & "."
        Case Enums.EntregaEstados.Enviado
          ltrEntregaTitulo.Text = "Entrega nº " & .EntregaId & " se encuentra en camino."
          ltrEntregaTitulo.Text = "Fecha y hora de entrega aproximada " & .FechaHoraEntregaPactada.ToString("dd/MM/yyyy") & " a las " & _
                              .FechaHoraEntregaPactada.ToString("HH:mm") & "."
        Case Enums.EntregaEstados.Pendiente
          ltrEntregaTitulo.Text = "Entrega nº " & .EntregaId & " en estado Pendiente de envío."
          ltrEntregaTitulo.Text = "Pactada a realizarse el " & .FechaHoraEntregaPactada.ToString("dd/MM/yyyy") & " a las " & _
                              .FechaHoraEntregaPactada.ToString("HH:mm") & " (puede cambiar)."
      End Select
      mvDatos.SetActiveView(viewEntrega)
      ConfigurarEntrega(pEnt)
    End With
  End Sub

  Private Sub ConfigurarEntrega(pEnt As Entrega)
    CargarDestinatario(pEnt)
    CargarLugarEntrega(pEnt)
    CargarMapa(pEnt)
    CargarCadete(pEnt)
    CargarProductos(pEnt)
  End Sub

  Private Sub CargarProductos(pEnt As Entrega)
    Dim bcFactDet As New BC_FacturaDetalle
    Dim lstFactDet As List(Of FacturaDetalle)
    lstFactDet = bcFactDet.getByCabecera(pEnt.FacturaId)
    grdPedidoProductos.DataSource = (From fd In lstFactDet Select fd.Cantidad, Producto = fd.Descripcion).ToList
    grdPedidoProductos.DataBind()
  End Sub

  Private Sub CargarCadete(pEnt As Entrega)
    If Not pEnt.CadetePerId.HasValue Then
      mvCadete.SetActiveView(viewSinCadete)
    Else
      Dim entPer As Persona
      Dim bcPer As New BC_Persona
      entPer = bcPer.GetByPK(pEnt.CadetePerId.Value).FirstOrDefault
      mvCadete.SetActiveView(viewConCadete)
      imgCadete.ImageUrl = "img.aspx?id=" & pEnt.CadetePerId.Value.ToString
      txtCadeteNombre.Text = entPer.Nombre & " " & entPer.Apellido
      txtCadeteDni.Text = FormatNumber(entPer.NumeroDoc, 0, TriState.False, TriState.False, TriState.True)
    End If
  End Sub

  Private Sub CargarMapa(pEnt As Entrega)
    Dim lat As String = pEnt.DestLat.ToString.Replace(",", ".")
    Dim lon As String = pEnt.DestLong.ToString.Replace(",", ".")
    Dim strSrc As String = "http://maps.google.com/maps/api/staticmap?zoom=16&size=400x200&markers=color:blue|label:D|" & lat & "," & lon & "&sensor=false"
    imgMapa.ImageUrl = strSrc
  End Sub

  Private Sub CargarLugarEntrega(pEnt As Entrega)
    With pEnt
      txtLugarBarrio.Text = .DestBarrio
      txtLugarCalle.Text = .DestCalle & " " & .DestNumero
      txtLugarCiudad.Text = .DestCiudad
      txtLugarCP.Text = .DestCodigoPostal
      txtLugarPais.Text = .DestPais
      txtLugarPiso.Text = .DestPiso & " " & .DestDepto
      txtLugarProvincia.Text = .DestProvincia
    End With
  End Sub

  Private Sub CargarDestinatario(pEnt As Entrega)
    With pEnt
      txtDestDNI.Text = FormatNumber(.DestNumeroDoc, 0, TriState.False, TriState.False, TriState.True)
      txtDestEmail.Text = .DestEmail
      txtDestNombre.Text = .DestNombre & " " & .DestApellido
      txtDestTel.Text = .DestTelefono & " " & .DestTelefonoCel
    End With

  End Sub

  Private Sub MostrarMensajeError()
    mvDatos.SetActiveView(viewSinDatos)
  End Sub

  Private Sub btnBuscar_Click(sender As Object, e As System.EventArgs) Handles btnBuscar.Click
    CargarEntrega()
  End Sub
End Class